package sort;

import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

public class QuickSort {

    @Test
    void testQuickSort(){

        int count = 1;
        int num = 1;
        if(count++>=2){
            System.out.println();
        }
        if (++num >= 2){
            System.out.println();
        }


        int[] a= {72,6,57,88,60,42,83,73,48,85};
        quickSort(a,0,9);
        System.out.println(Arrays.toString(a));
    }


    public void quickSort(int[] ints, int left, int right){
        if(left <= right){
            int l = left;
            int r = right;
            int temp = ints[left];
            while (l<r){
                while (l<r && temp<ints[r]){
                    r--;
                }
                if(temp>ints[r]){
                    ints[l] = ints[r];
                    l++;
                }
                while (l<r && ints[l]<temp){
                    l++;
                }
                if(ints[l] > temp){
                    ints[r] = ints[l];
                }
            }

            ints[l] = temp;
            quickSort(ints, left, l-1);
            quickSort(ints, l+1, right);
        }
    }
































    public void quickSort1(int[] a, int left,int right) {
        if(left <= right){
            int l = left;
            int r = right;
            int temp = a[l];
            while (l < r){
                while (l<r && temp < a[r]){
                    r--;
                }
                if(l < r){
                    a[l] = a[r];
                    l++;
                }
                while (l<r && a[l] < temp){
                    l++;
                }
                if(l<r){
                    a[r] = a[l];
                }
            }
            a[l] = temp;
            quickSort(a,left,l-1);
            quickSort(a,l+1,right);
        }







//        if (left <= right) { //首先确定要在这个条件里面执行
//            int l = left;
//            int r = right;
//            int temp = a[left]; //确定了最初始的对比值
//            while (l < r) {
//
//                while (l < r && temp < a[r]) { // 判断最右边的比对比值大
//                    r--;
//                }
//                if (l < r) { // 这个条件进入的时候说明右边的数比初始值要小，把右边的值放到左边l的坑位；l加一位
//                    a[l] = a[r];
//                    l++;
//                }
//                while (l < r && a[l] < temp) { // 右边的对比由于出现了小的值，现在开始从左边对比
//                    l++;
//                }
//                if (l < r) {
//                    a[r] = a[l];
//                }
//            }
//            a[l] = temp;
//            quickSort(a, left, l - 1);
//            quickSort(a, l + 1, right);
//        }
    }
}
